package co.edu.usbcali.sap.modelo.control;

import co.edu.usbcali.sap.modelo.Persona;
import co.edu.usbcali.sap.modelo.Proyecto;
import co.edu.usbcali.sap.modelo.dto.LineaInvestigacionDTO;
import co.edu.usbcali.sap.modelo.dto.PersonaDTO;

import java.math.BigDecimal;

import java.util.*;

/**
 * interface ProyectoLogic
 * 
 * @author Zathura Code Generator http://code.google.com/p/zathura
 * 
 */
public interface IProyectoLogic {
	public List<Proyecto> getProyecto() throws Exception;

	public void saveProyecto(Integer proCodigo, Date proFechafin,
			Date proFechainicio, String proNombre, String proTemaproyecto,
			Integer comCodigo_Comite, Integer estCodigo_Estado,
			Integer fasproCodigo_FaseProyecto,
			Integer tipproCodigo_TipoProyecto, List<PersonaDTO> integrantes,
			List<PersonaDTO> directores) throws Exception;

	public void saveProyecto2(Integer proCodigo, Date proFechafin,
			Date proFechainicio, String proNombre, String proTemaproyecto,
			List<PersonaDTO> integrantes, List<PersonaDTO> directores,
			Integer estCodigo, Integer faseCodigo, Integer tipo,
			Integer codigoProyecto, List<LineaInvestigacionDTO> linea)
			throws Exception;

	public void crearProyecto(Proyecto entity,List<PersonaDTO> integrantes, List<PersonaDTO> directores,List<LineaInvestigacionDTO> linea) throws Exception;
	
	public void deleteProyecto(Integer proCodigo) throws Exception;

	public void updateProyecto2(Integer proCodigo, Date proFechafin,
			Date proFechainicio, String proNombre, String proTemaproyecto,
			List<PersonaDTO> integrantes, List<PersonaDTO> directores,
			Integer estCodigo, Integer faseCodigo, Integer tipo,
			Integer codigoProyecto, List<LineaInvestigacionDTO> linea)
			throws Exception;

	public void updateProyecto(Integer proCodigo, Date proFechafin,
			Date proFechainicio, String proNombre, String proTemaproyecto,
			Integer comCodigo_Comite, Integer estCodigo_Estado,
			Integer fasproCodigo_FaseProyecto, Integer tipproCodigo_TipoProyecto)
			throws Exception;

	public Proyecto getProyecto(Integer proCodigo) throws Exception;

	public List<Proyecto> findByCriteria(Object[] variables,
			Object[] variablesBetween, Object[] variablesBetweenDates)
			throws Exception;

	public List<Proyecto> findPageProyecto(String sortColumnName,
			boolean sortAscending, int startRow, int maxResults)
			throws Exception;

	public Long findTotalNumberProyecto() throws Exception;

	public List<Persona> getPersonasFromProyecto(Integer rol, Integer proCodigo)
			throws Exception;

	public List<Proyecto> getAllAntepro() throws Exception;

	public List<Proyecto> findProyecto(String string, String consulta)throws Exception;

	
	//public void enviarCorreos(Integer cantSemanas)throws Exception;

	public Proyecto getProyectoNombre(String string)throws Exception;

}
